package com.springboot.mapper;

import com.springboot.model.ChatRecord;
import org.apache.ibatis.annotations.Mapper;

import java.util.ArrayList;

@Mapper
public interface ChatRecordMapper {
    int deleteByPrimaryKey(Integer chatId);

    int insert(ChatRecord record);

    int insertSelective(ChatRecord record);

    ChatRecord selectByPrimaryKey(Integer chatId);

    int updateByPrimaryKeySelective(ChatRecord record);

    int updateByPrimaryKey(ChatRecord record);
    //查找所有该患者的消息（未删除部分）
    ArrayList<ChatRecord> selectByPatientId(Integer patientId);

    //显示患者与某医生的聊天信息（未删除部分）
    ArrayList<ChatRecord> selectByTwoId(Integer patientId, Integer doctorId);

    //根据患者Id和医生Id显示最新聊天记录,降序排序，只需提取第一条即可
    ArrayList<ChatRecord> selectNewestOneChat(Integer patientId, Integer doctorId);

    //患者根据患者Id和医生Id删除所有聊天记录
    int patientDeleteChatInfo(Integer patientId, Integer doctorId);

    //患者根据患者ID和医生ID把接收方是患者ID的聊天设置为已读
    int patientSetReadChatByTwoId(Integer patientId, Integer doctorId);


    //通过接收方id查找所有该接收方的消息
    ArrayList<ChatRecord> selectByReceiverId(Integer receiverId);

    //通过发送方查找所有该发送方的消息
    ArrayList<ChatRecord> selectBySenderId(Integer senderId);

    //通过接收方id和发送方id查找所有消息
    ArrayList<ChatRecord> selectByRecord(ChatRecord record);


    //助理
    //查找所有该医生的消息（未删除部分）
    ArrayList<ChatRecord> selectByDoctorId(Integer doctorId);

    //查找客服的未读消息
    ArrayList<ChatRecord> selectCustomerServiceUnRead();

    //查找指定患者对客服的未读消息
    ArrayList<ChatRecord> selectPatientCustomerServiceUnRead(Integer patientId);

    //查找客服的消息
    ArrayList<ChatRecord> selectCustomerServiceAllMessage();

    //根据客服Id=0和患者Id显示最新聊天记录,降序排序，只需提取第一条即可
    ArrayList<ChatRecord> selectCustomerServiceAllChat(Integer patientId, Integer doctorId);

    //显示助理充当客服时与患者的聊天信息（未删除部分）
    ArrayList<ChatRecord> selectByTwoId1(Integer patientId, Integer doctorId);

    //更新助理充当客服时与患者的聊天信息（标记为已读）
    int updateByChatId(Integer chatId);

    int updateAssistantFlagByChatId(Integer chatId);
}